﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using PetSoft.GUI.RRHH;
using Business_Logic;
using Business_Entity;

namespace PetSoft.GUI.Seguridad
{
    public partial class GUIBuscarUsuario : Form
    	
    {
    	private int colCheck;
    	
    	public GUIBuscarUsuario()
        {
            InitializeComponent();
            this.colCheck = 0;
            this.textBox1.Enabled = false;
            this.textBox5.KeyPress+=new KeyPressEventHandler(Utils.ParaUsuarioTB);
            //this.dataGridView1.CellMouseDoubleClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.grid_CellMouseDoubleClick);
        }

         void grid_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
		{
			
		}
        
        void AceptarBTNClick(object sender, EventArgs e)
        {
        	try{
        		Seguridad.GUIMantUsuario mantUsuario = new Seguridad.GUIMantUsuario(false,int.Parse(this.textBox1.Text),false);
        		mantUsuario.ShowDialog(this);	
        	}
        	catch {
        		Utils.MessageError("Usted no ha seleccionado ningun usuario");
        	}
        }
        
        void CancelarBTNClick(object sender, EventArgs e)
        {
        	this.Close();
        }
        
        void Button1Click(object sender, EventArgs e)
        {
        	Seguridad.GUIMantUsuario mantUsuario = new Seguridad.GUIMantUsuario(true);
        	mantUsuario.ShowDialog(this);
        	
        }
               
        
        void buscarUsuario(){
        	this.dataGridView1.Rows.Clear();
				BLUsuario blUsuario = new BLUsuario();
				
				
				List<String> datos = new List<String>();
				datos.Add(this.textBox5.Text);
				datos.Add(this.textBox1.Text);
				for (int i=0; i<datos.Count; i++)
				{
					if (datos[i] == null)
						datos[i] = "";
				}
				
				List<List<string>> result = new List<List<string>>();
				result = blUsuario.buscarUsuario(datos[0], datos[1]);
				
				if (result != null)
				{
					
					this.dataGridView1.Rows.Clear();
					for (int j=0; j<result.Count; j++)
					{
						string[] fila = null;
						fila = new string[]{
							false.ToString(),
							result[j][0].ToString(),
							result[j][1].ToString(),
							result[j][2].ToString(),
							result[j][3].ToString(),
							result[j][4].ToString(),
							result[j][5].ToString()
						};
						this.dataGridView1.Rows.Add(fila);
					}
					
				}
				else
				{
					Utils.MessageAviso("No se han hallado resultados");
				}
        }
        
        void BuscarBTNClick(object sender, EventArgs e)
        {
        	buscarUsuario();
            this.nroResultadosLB.Text = "Cantidad de resultados encontrados: " + this.dataGridView1.Rows.Count.ToString();
        }
        
        void BuscarEmpleadoBTNClick(object sender, EventArgs e)
        {
        	RRHH.GUIBuscarEmpleado buscaEmp = new RRHH.GUIBuscarEmpleado();
        	buscaEmp.ShowDialog(this);
        	
        	try{
        		this.textBox1.Text = buscaEmp.Empleado.Nombre+" "+
        							 buscaEmp.Empleado.ApPaterno+" "+
        							 buscaEmp.Empleado.ApMaterno;
        	}
        	catch {
        		this.textBox1.Text = "";
        	}
        }
        
        void dataGridView1CellMouseDoubleClick (object sender, DataGridViewCellMouseEventArgs e)
        {
        	try{        	
	        	//MessageBox.Show(listaClientes[e.RowIndex].Nombre);
	        	if(Convert.ToBoolean(dataGridView1.Rows[e.RowIndex].Cells[0].Value))
	        		dataGridView1.Rows[e.RowIndex].Cells[0].Value = false;
	        	else
	        		dataGridView1.Rows[e.RowIndex].Cells[0].Value = true;
	        	//this.Dispose();
        	}catch{
        		
        	}
        } 
        
        void SelTodoCheckedChanged(object sender, EventArgs e)
        {
        	foreach (DataGridViewRow fila in dataGridView1.Rows)
			{
				if (this.selTodo.Checked == true)
					fila.Cells[this.colCheck].Value = (bool) true;
				if (this.selTodo.Checked == false)
					fila.Cells[this.colCheck].Value = (bool) false;
			}
        }
        
        
        
        void EditarBTNClick(object sender, EventArgs e)
        {
        	try{
        		int cont = 0;
				int aux = 0;
				int pos = 0;
				foreach (DataGridViewRow fila in dataGridView1.Rows)
				{
					if (fila.Cells[this.colCheck].Value != null && Convert.ToBoolean(fila.Cells[this.colCheck].Value))
					{
						cont++;
						pos = aux;
					}
					aux++;
				}
				
				if (cont == 0)
				{
					Utils.MessageAviso("Seleccione un usuario.");	
				}
				else if (cont == 1)
				{								
					DataGridViewRow fila = dataGridView1.Rows[pos];
					if (fila.Cells[this.colCheck].Value != null && Convert.ToBoolean(fila.Cells[this.colCheck].Value))
					{
						int codEmp = int.Parse(fila.Cells["Codigo"].Value.ToString());
						
						Seguridad.GUIMantUsuario mantUsuario = new Seguridad.GUIMantUsuario(true,codEmp ,false);
						mantUsuario.ShowDialog(this);
						
						
					}
					cont++;
				}
				else if (cont > 1)
				{
					Utils.MessageAviso("Seleccione sólo un usuario");		
				}	
			} catch {
				Utils.MessageAviso("Usted no ha seleccionado ningun usuario");
			}
        	
        	this.dataGridView1.Rows.Clear();
        	buscarUsuario();
        	this.nroResultadosLB.Text = "Cantidad de resultados encontrados: " + this.dataGridView1.Rows.Count.ToString();
        	
        }
        
        void Button2Click(object sender, EventArgs e)
        {
        	//limpiar
        	this.textBox1.Text = "";
        	this.textBox5.Text = "";
        	this.dataGridView1.Rows.Clear();
        	
        }
        
        void EliminarBTNClick(object sender, EventArgs e)
        {
        	try {
			
				int cont = 0;
				int aux = 0;
				int pos = 0;
				
				foreach (DataGridViewRow fila in dataGridView1.Rows)
				{
					if (fila.Cells[0].Value != null && Convert.ToBoolean(fila.Cells[0].Value))
					{
						cont++;
						pos = aux;
					}
					aux++;
				}
				
				if (cont == 0)
				{
					Utils.MessageAviso("Seleccione un cliente.");	
				}
				else if (cont == 1)
				{								
					if (Utils.MessagePregunta("¿Está seguro que desea eliminar el usuario seleccionado?"))
					{
						Boolean result;
						DataGridViewRow fila = dataGridView1.Rows[pos];
						if (fila.Cells["Codigo"].Value.ToString()==""){
							result = (new BLUsuario()).anulaUsuario(fila.Cells["Usuario"].Value.ToString());		
						} else {
							result = (new BLUsuario()).anulaUsuario(int.Parse(fila.Cells["Codigo"].Value.ToString()));
						}
						if (result)
							Utils.MessageAviso("Se elimino al usuario de formae exitosa");
						else
							Utils.MessageAviso("Hubo un error al momento de eliminar al usuario");
					}
				}
				else if (cont > 1)
				{
					Utils.MessageAviso("Seleccione sólo un cliente");		
				}	
        	} catch(Exception x) {
				Utils.MessageError("Ha ocurrido un error",x);
			}
        	this.dataGridView1.Rows.Clear();
        	buscarUsuario();
        	this.nroResultadosLB.Text = "Cantidad de resultados encontrados: " + this.dataGridView1.Rows.Count.ToString();
        
        }
    }
}
